Color display devices have become the principal display devices of choice for most computer users. The display of color on a monitor is normally achieved by operating the display device to emit light, e.g., a combination of red, green, and blue light, which results in one or more colors being perceived by the human eye.
In cathode ray tube (CRT) display devices, the different colors of light are generated with phosphor coatings which may be applied as dots in a sequence on the screen of the CRT. A different phosphor coating is normally used to generate each of three colors, red, green, and blue. The coating results in repeated sequences of phosphor dots each of which, when excited by a beam of electrons, will generate the color red, green or blue.
The term pixel is commonly used to refer to one spot in, e.g., a rectangular grid of thousands of such spots. The spots are individually used by a computer to form an image on the display device. For a color CRT, where a single triad of red, green and blue phosphor dots cannot be addressed, the smallest possible pixel size will depend on the focus, alignment and bandwidth of the electron guns used to excite the phosphors. The light emitted from one or more triads of red, green and blue phosphor dots, in various arrangements known for CRT displays, tend to blend together giving, at a distance, the appearance of a single colored light source.
In color displays, the intensity of the light emitted from the additive primary colors, red, green, and blue, can be varied to get the appearance of almost any desired color pixel. Adding no color, i.e., emitting no light, produces a black pixel. Adding 100 percent of all three colors results in a white pixel.
Portable computing devices, including hand held devices and portable computers, often use liquid crystal displays (LCD) or other flat panel display devices 102, as opposed to CRT displays. This is because flat panel displays tend to be smaller and lighter than CRT displays. In addition, flat panel displays are well suited for battery powered applications since they typically consume less power than comparable sized CRT displays.
Color LCD displays are examples of display devices which utilize multiple distinctly addressable elements, referred to herein as pixel sub-components or pixel sub-elements, to represent each pixel of an image being displayed. Normally, each pixel element of a color LCD display comprises three non-square elements, i.e., red, green and blue (RGB) pixel sub-components. Thus, a set of RGB pixel sub-components together define a single pixel element. Known LCD displays generally comprise a series of RGB pixel sub-components which are commonly arranged to form stripes along the display. The RGB stripes normally run the entire length of the display in one direction. The resulting RGB stripes are sometimes referred to as "RGB striping". Common LCD monitors used for computer applications, which are wider than they are tall, tend to have RGB vertical stripes.
FIG. 1 illustrates a known LCD screen 200 comprising a plurality of rows (R1-R12) and columns (C1-C16). Each row/column intersection defines a square which represents one pixel element. FIG. 2 illustrates the upper left hand portion of the known display 200 in greater detail.
Note in FIG. 2 how each pixel element, e.g., the (R1, C4) pixel element, comprises three distinct sub-element or sub-components, a red sub-component 206, a green sub-component 207 and a blue sub-component 208. Each known pixel sub-component 206, 207, 208 is 1/3 or approximately 1/3 the width of a pixel while being equal, or approximately equal, in height to the height of a pixel. Thus, when combined, the three 1/3 width full height, pixel sub-components 206, 207, 208 form a single pixel element.
As illustrated in FIG. 1, one known arrangement of RGB pixel sub-components 206, 207, 208 form what appear to be vertical color stripes on the display 200. Accordingly, the arrangement of 1/3 width color sub-components 206, 207, 208, in the known manner illustrated in FIGS. 1 and 2, is sometimes called "vertical striping".
Traditionally, each set of pixel sub-components defining a pixel element is treated as a single pixel unit. The intensity of each pixel sub-component is controlled by a luminous intensity value. Accordingly, in known systems luminous intensity values for all the pixel sub-components of a pixel element are generated from the same portion of an image. Consider for example, the image segmented by the grid 220 illustrated in FIG. 3. In FIG. 3 each square of the grid represents an area of an image which is to be represented by a single pixel element, e.g., a red, green and blue pixel sub-component of the corresponding square of the grid 230. In FIG. 3 a cross-hatched circle is used to represent a single image sample from which luminous intensity values are generated. Note how a single sample 222 of the image 220 is used in known systems to generate the luminous intensity values for each of the red, green, and blue pixel sub-components 232, 233, 234. Thus, in known systems, the RGB pixel sub-components are generally used as a group to generate a single colored pixel corresponding to a single sample of the image to be represented.
Text characters are an example of images which are frequently displayed by a computer system. Spacing between characters, and the position of a character within a fixed amount of space allocated to a character, can significantly impact the perceived quality of text. In addition, character spacing is important from a document formatting perspective.
Many modern computer systems use font outline technology, e.g., scalable fonts, to support the rendering and display of text. In such systems each font, e.g., TinesNewRoman, Onyx, Courier New, etc. is supported by using a different font set. The font set normally includes a high resolution outline representation, e.g., lines points and curves, for each character which may be displayed using the font. The stored outline character representation normally does not include white space beyond the minimum and maximum horizontal and vertical boundaries of the character as to not take up extra space. Therefore, the stored character outline portion of a character font is often referred to as a black body (BB). In addition to BB information, a character font normally includes BB size, BB positioning, and overall character width information. BB size information is sometimes expressed in terms of the dimensions of a bounding box used to define the vertical and horizontal borders of the BB.
FIG. 4 illustrates a character, the letter A 400. Box 408 is a bounding box which defines the size of the BB 407 of the character 400. The total width of the character 400, including optional white space to be associated with the character 400, is specified by an advanced width (AW) value 402. Point 404 is referred to as the left side bearing point (LSBP). The LSBP 404 marks the horizontal starting point for positioning the character 400 relative to a current display position. Point 406 is the right side bearing point (RSBP). The RSBP 406 marks the end of the current character and the point at which the LSBP 404 of the next character should be positioned. The horizontal distance located between the left side bearing point 404 and the start of the BB 407 is called the left side bearing (LSB) 410. LSB values can be specified as either positive or negative values. The horizontal distance 412 located between the end of the BB 407 and the RSBP 406 is called the right side bearing (RSB). The RSB 412 indicates the amount of white space to be placed between the BB 407 of a current character and the LSB of 404 of the next character. Thus, the RSB 412 corresponds to the amount of white space that should be located to the right of a character's BB 407.
As discussed above, a scalable font file normally includes BB size, BB positioning, and overall character width information for each supported character. The BB size information may include horizontal and vertical size information expressed as bounding box dimensions. The BB positioning information may include, e.g., the LSB value 410. Overall character width information may be included in a character's font as an AW 402.
Most computer systems force the starting and ending points, e.g., the LSBPs and RSBPs, respectively, of characters which are being displayed to be positioned on pixel boundaries. In addition, they usually force the BB width and LSB to be an integer multiple of the pixel size. In known implementations, this is done by first scaling the size and positioning information included in a character font as a function of the point size to be used to display the character and then rounding the size and positioning values to integer multiples of the utilized pixel size. Using pixel size units as the minimum distance unit produces what is called "pixel precision" since the values are accurate to the size of one pixel.
Rounding using pixel precision introduces errors into displayed images. Each of these errors may be up to 1/2 a pixel in size. Thus, the overall width of a character may be less accurate than desired due to the character's AW rounding. In addition, position a character's BB within the total horizontal space allocated to the character may be sub-optimal due to rounding the LSB. At small point sizes, the errors introduced by rounding using pixel precision can be significant as a percentage of the overall character width.
Minor changes in the spacing of characters found in an existing document can have significant formatting effects which are often not anticipated by the user. For example, changes in overall character width may change line and page breaks causing text to wrap in unexpected ways and/or to extend over multiple pages where previously the text did not.
It is also desirable, from a backwards compatibility perspective, that at least some of the new methods and apparatus position characters within preselected character spaces better than those already in use. In this manner, improvements in character positioning may be possible without affecting the formatting of existing documents.
In view of the above discussion, it is apparent that there is a need for improved methods of rendering and displaying images including text.